<html xmlns="http://www.w3.org/1999/xhtml"><head><style type="text/css">
dt {
  font-style: italic;
  margin-top: 15px;
  margin-bottom: 3px;
  margin-left: 0px;
  border-bottom: 1px dotted black;
}
dd {
  margin-left: 10px;
}
table {
  border-collapse:collapse;
  border: 1px solid black;
  margin-top: 7px;
}
th {
  border: 1px solid black;
  padding: 3 7 3 7;
}
td {
  border: 1px solid black;
  padding: 3 7 3 7;
}
</style></head><body><p><a name="jsr_w"></a><b>jsr_w</b> :
  jump to subroutine using wide offset : <a href="opcodes.html">index</a> : </p><dl><dt>Description</dt><dd>This calls a local subroutine defined within the body of a method. It is
used to implement Java's finally clause.<br></br>jsr_w first pushes the address (<i xmlns="">pc</i> + 5) onto the operand stack,
where <i xmlns="">pc</i> is the address of this jsr_w instruction in the
bytecode. The address (<i xmlns="">pc</i> + 5) is  the address of instruction that
immediately follows the jsr_w instruction in bytecode - it is used
used by the ret instruction to return from the subroutine. <br></br>Next, execution branches to the address (<i xmlns="">pc</i> + <i xmlns="">branchoffset</i>),
where <i xmlns="">pc</i> is the address of the jsr_w opcode in the bytecode and
<i xmlns="">branchoffset</i> is the 32-bit signed integer parameter following the
jsr_w opcode in the bytecode.  If you are using Jasmin,
<i xmlns="">branchoffset</i> is computed for you from the address of &lt;label&gt;.</dd><dt>Notes</dt><dd>1. jsr_w is identical to the jsr instruction except
that it uses a 32-bit wide offset instead of a 16-bit wide
offset.<br></br>2. Addresses are measured in bytes from the start of the bytecode (i.e. address
0 is the first byte in the bytecode of the currently executing method). The
maximum address in a method is 65535.<br></br>3. In Jasmin, jsr and jsr_w are synonymous, since the Jasmin
assembler automatically decides which version of the instruction to use, based
on the address of  the&lt;label&gt;.</dd><dt>See also</dt><dd><a href="ref-jsr.html">jsr</a> <a href="ref-.html"></a> <a href="ref-ret.html">ret</a> <a href="ref-.html"></a> <a href="ref-goto.html">goto</a> <a href="ref-.html"></a> <a href="ref-goto_w.html">goto_w</a> </dd><dt>Stack</dt><dd><table xmlns="">
<tr>
<td>
<b>Before </b>
</td>
<td><b>After</b></td></tr>
<tr>
<td>...</td>
<td>return-address</td></tr>
<tr>
<td></td>
<td>...</td></tr>
</table></dd><dt>Bytecode</dt><dd><table xmlns="">
<tr>
<td>
<b> Type </b>
</td>
<td><b>Description</b></td></tr>
<tr>
<td>
u1 
</td>
<td>jsr_w
opcode = 0xC9 (201)
</td></tr>
<tr>
<td>
s4 
</td>
<td><i>branchoffset</i></td></tr>
</table></dd></dl></body></html>